/*
 * Logger.h
 *
 *  Created on: Mar 14, 2013
 *      Author: nick
 */

#ifndef LOGGER_H_
#define LOGGER_H_

#include "../h/Levels.h"
#include "../h/LogMessage.h"
#include "../h/Destination.h"
#include <string>

namespace Logging {
	class Logger {
	private:
		static Logger * logger;
		Destination * destination;
		Level severityLevel;

		Logger();
		Logger(const Logger & logger);
		Logger & operator=(const Logger & logger);
		static void removeInstance();
	public:
		static Logger & getInstance();
		void setDestination(Destination * destination);
		void setSeverityLevel(const Level level);
		bool setup(const char* configurationFile);
		void log(const LogMessage & message) const;
		~Logger();
	};

	void debug(const std::string & text);
	void info(const std::string & text);
	void warn(const std::string & text);
	void error(const std::string & text);
}






#endif /* LOGGER_H_ */
